package cn.dduan.fool.annotation;

import lombok.extern.slf4j.Slf4j;

/**
 * Java 注解
 *
 * 介绍：
 * 1. Java注解本质上是一个标记，可以理解成生活中的一个人的一些小装扮，比如戴什么什么帽子，戴什么眼镜
 * 2. 注解可以标记在[类上、方法上、属性]上等，标记自身也可以设置一些值，比如帽子颜色是绿色
 * 3. 有了标记之后，我们就可以在编译或者运行阶段去识别这些标记，然后搞一些事情，这就是注解的用处
 * 4. 例如我们常见的AOP，使用注解作为切点就是运行期注解的应用；比如lombok，就是注解在编译期的运行
 *
 * 注解生命周期有三大类，分别是：
 * 1. RetentionPolicy.SOURCE：给编译器用的，不会写入 class 文件
 * 2. RetentionPolicy.CLASS：会写入 class 文件，在类加载阶段丢弃，也就是运行的时候就没这个信息了
 * 3. RetentionPolicy.RUNTIME：会写入 class 文件，永久保存，可以通过反射获取注解信息
 *
 * @author dduan
 * @version 1.0
 * @date 2025/3/1
 */
@Slf4j
public class AnnotationFoolApplication {
    public static void main(String[] args) {
        log.info("fool-annotation success");
    }
}